package com.eliza.kotlin.design.creation.single


/*-*- coding:utf-8 -*-
 * @Author  : debi
 * @Time    : 6/4/22
 * @Software: IntelliJ IDEA
 */

/**
* 单例设计模式分类两种：
    饿汉式：类加载就会导致该单实例对象被创建
    懒汉式：类加载不会导致该单实例对象被创建，而是首次使用该对象时才会创建
* */
/**
* 饿汉式： 静态变量
    instance对象是随着类的加载而创建的。如果该对象足够大的话，而一直没有使用就会造成内存的浪费。
 */
private class HungrySingleton {

    //1，私有构造方法
    private constructor()


    companion object {
        //2，在本类中创建本类对象
        private val instance = HungrySingleton()

        //3，提供一个公共的访问方式，让外界获取该对象
        fun getInstance(): HungrySingleton {
            return instance
        }
    }


}

fun main() {

    //创建Singletion类的对象
    val instance = HungrySingleton.getInstance()

    val instance1 = HungrySingleton.getInstance()
    //判断获取到的两个是否是同一个对象
    println(instance === instance1)
}